Plotlyは、動的なグラフ操作ができるソフトです。 グラフの一部をクローズアップするような グラフィカル分析 ができます。 三次元のグラフをグルグル回す分析もできます。
ggplot2 と比べると、コードが少しシンプルです。
ただ、層別の分析は機能が少なめです。
また、動的なグラフを作るため、グラフの表示に時間がかかります。
Plotlyはいろいろな環境で使えるようになっているので、いくつか試しているのですが、 筆者の場合、うまく行ったものと、行かないものがあります。
RStudioの場合は、特に問題なくできました。
Rguiの場合は、最初は、Plotlyのグラフを出力しようとすると、 グラフは出ず、なぜかテキストエディタのソフトが起動します。 既定のブラウザソフトが、Google Cromeの場合はダメで、Microsoft EdgeやExplorerに設定を変えたらできました。
Rでの使用例は下記になります。 plotlyというパッケージをあらかじめインストールしておきます。
下記は、コピーペーストで、そのまま使えます。 この例では、Cドライブの「Rtest」というフォルダに、 「Data.csv」という名前でデータが入っている事を想定しています。
「plot_ly」から始まる命令文の前に、下記は必ず必要です。
library(plotly) # パッケージの読み込み
setwd("C:/Rtest") # 作業用ディレクトリを変更
Data <- read.csv("Data.csv", header=T) # データを読み込み
散布図 の作り方です。
ggplot2 の場合は、一次元散布図の機能や、一次元散布図を素直にジターにする機能があったのですが、 Plotlyではないようです。 Plotlyの場合は、箱ひげ図のオプションとして、箱ひげ図の横に一次元ジター散布図を作る機能があります。 ちなみに、「boxpoints="all"」がないと、箱ひげ図の外れ値をジター散布図で書き込んでくれます。
plot_ly(Data, x=~C1, y=~Y1, type = "box", boxpoints="all",jitter = 0.5) # 一次元ジター散布図を描く # 一次元ジター散布図を描く
データは、「C1」という列名でカテゴリがあり、「X1」、「Y1」という列名で数値が入っていることを想定しています。
データの読み込みまでは、上記と同じです。
plot_ly(Data, x=~X1, y=~Y1, type = 'scatter', color=~C1, symbol = ~C1)# 二次元散布図 色分け・形分け
色分けや形分けをしない場合は、C1を指定しているところが不要です。
plot_ly(Data, x=~X1, y=~Y1, type = 'scatter')# 二次元散布図
データは、「C1」という列名でカテゴリがあり、「X1」、「Y1」、「Z1」という列名で数値が入っていることを想定しています。
基本的には、二次元散布図にZ軸の変数の指定が増えただけです。
ただ、デフォルトだと、プロットが大きすぎるので、ここでは少し小さめに設定しています。
plot_ly(Data, x=~X1, y=~Y1, z=~Z1, type = 'scatter3d', color=~C1, symbol = ~C1, marker = list(size = 3))# 三次元散布図 色分け・形分け
折れ線グラフ の作り方です。
Plotlyの 折れ線グラフ は、折れ線グラフ用の何かはなく、 2次元散布図 のデータを線でつないだものです。 X1が等間隔のデータがない時に、等間隔にデータを並べる方法等、基本的に ggplot2 と同じです。
データは、「X1」という列名で横軸にするもの、「Y1」という列名で数値が入っていることを想定しています。
plot_ly(Data, x=~X1, y=~Y1, type = 'scatter', mode = 'lines+markers')# 折れ線グラフを描く
'lines+markers'ではなく、'lines'にすると、プロットが取れて、線だけになります。
データは、「X1」という列名で横軸にするもの、「Y1」、「Y2」、「Y3」、という列名で数値が入っていることを想定しています。 Xが共通で、Yが複数あるような場合に、ひとつのグラフで表したいことがあります。 この場合は、Yをつなげて、ひとつの列にして、列の違いを表す変数を作ると、グラフにできます。
なお、下記のプログラムでは、ひとつの列にする時に「X1の列以外をつなげる」という指示の出し方をしています。 XでもYでもない列があると、その列もYとして積み上げられてしまいます。
library(tidyr) # パッケージの読み込み
Data_long <- tidyr::gather(Data, key="Yno", value = Ys, -X1) # 縦型に変換(X1の列以外を積み上げる)
plot_ly(Data_long, x=~X1, y=~Ys, type = 'scatter', color=~Yno, symbol = ~Yno, mode = 'lines+markers')# 層別の折れ線グラフを描く
Plotly社のRのページ
https://plot.ly/r/
英語のページですが、できあがりのグラフとコードがセットで説明されていますし、
コードも短いものばかりなので、英語の苦手な方でも欲しい情報が取れるのではないかと思います。
R以外でPlotlyを使う場合の説明も、もちろんあります。